package com.lcx.movie.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lcx.movie.mapper.UserMapper;
import com.lcx.movie.entity.User;
import com.lcx.movie.service.UserService;

import java.util.List;

/**
 * @Description  
 * @version 1.0 
 * @author lcx
 * @date 2025/2/9 11:25
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService{
    /**
     *用户登录
     * @param user_name 用户名
     * @param user_pwd 密码
     * @return 用户对象
     */
    @Override
    public User userLogin(String user_name, String user_pwd) {
        return this.baseMapper.userLogin(user_name,user_pwd);
    }

    /**
     * //用户注册
     * @param user 用户对象
     * @return 受影响的行数
     */
    @Override
    public int insertUser(User user) {
        return this.baseMapper.insertUser(user);
    }

    /**
     *  //分页模糊查询用户(用户账号)
     * @param userName 用户名
     * @return 用户集合
     */
    @Override
    public List<User> selectUserPage(String userName) {
        return this.baseMapper.selectUserPage(userName);
    }

    /**
     *  //详细查看用户信息
     * @param userId 用户id
     * @return 用户对象
     */
    @Override
    public User selectUserId(int userId) {
        return this.baseMapper.selectUserId(userId);
    }

    /**
     * //修改用户
     * @param user 用户对象
     * @return 字符串提示信息
     */
    @Override
    public String updateUser(User user) {
        return this.baseMapper.updateUser(user)>0?"修改成功":"修改失败";
    }

    /**
     * //删除用户
     * @param userId 用户id
     * @return 字符串提示信息
     */
    @Override
    public String deleteUserId(Integer userId) {
       return this.baseMapper.deleteUserId(userId)>0?"删除成功":"删除失败";
    }
    /**
     * 修改用户头像
     * @param user 用户实体
     * @return 受影响的行数
     */
    public int updateUserHeadImg(User user){
        return this.baseMapper.updateUserHeadImg(user);
    }

    /**
     * // 修改用户信息
     * @param userName 用户名
     * @param userEmail 用户邮箱
     * @param userId 用户id
     * @return 受影响的行数
     */
    public int updateUsers(@Param("userName")String userName,@Param("userEmail") String userEmail,@Param("userId") Integer userId){
        return baseMapper.updateUsers(userName,userEmail,userId);
    }

    /**
     *  // 修改用户密码
     * @param userId 用户id
     * @param userPwd 密码
     * @return 受影响的行数
     */
    @Override
    public int updateUserPwd(Integer userId, String userPwd) {
        return this.baseMapper.updateUserPwd(userId,userPwd);
    }

    /**
     * 管理员登录
     * @param userName 用户名
     * @param userPwd 密码
     * @return 用户对象
     */
    @Override
    public User rootLogin(@Param("userName") String userName,@Param("userPwd") String userPwd){
        return this.baseMapper.rootLogin(userName,userPwd);
    }
    /**
     * 修改用户状态
     * @param userId 用户id
     * @param userStatus 用户状态
     * @return 字符串提示信息
     */
    @Override
    public String updateUserStatus(Integer userId, Integer userStatus) {
        return this.baseMapper.updateUserStatus(userId,userStatus)>0?"修改成功":"修改失败";
    }
    /**
     * 根据用户封禁表同时修改用户状态
     * @param userId 用户id
     * @return 受影响的行数
     */
    @Override
    public int updateUserBanStatus(@Param("userId") Integer userId){
        return this.baseMapper.updateUserBanStatus(userId);
    }
    /**
     * 查询出管理员
     * @return 对象集合
     */
    public List<User> selectUserRole(){
        return this.baseMapper.selectUserRole();
    }

    /**
     * 修改申请注册影院的用户状态
     * @param userId 用户id
     * @return 受影响的行数
     */
    @Override
    public int updateStatus(@Param("userId") Integer userId){
        return this.baseMapper.updateStatus(userId);
    }

    /**
     * 注册手机号时是否重复
     * @param userName
     * @return
     */
    @Override
    public int selectUserName(String userName) {
        return this.baseMapper.selectUserName(userName);
    }
    /**
     * 注册邮箱时是否重复
     * @param userEmail
     * @return
     */
    @Override
    public int selectUserEmail(String userEmail) {
        return this.baseMapper.selectUserEmail(userEmail);
    }
}
